﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once

#include "GcmpJournalInterface.h"

namespace gcmp
{
    class IJournalReplayEvent;

    /// \brief 日志事件接收者
    /// 可派生该类，并通过 JournalUtils::RegisterJournalReplayEventReceiver 注册进日志框架中
    /// 日志回放时,用户可以处理日志事件
    class GCMP_JOURNAL_INTERFACE_EXPORT IJournalReplayEventReceiver
    {
    public:
        virtual ~IJournalReplayEventReceiver(void) {};

        /// \brief 用户接收日志事件
        ///
        /// \param[in] pJournalEvent 日志事件
        /// \return true:该事件已经处理,不继续分发；false:该事件未被处理,将继续分发
        virtual bool OnJournalEventReceived(const IJournalReplayEvent *pIUIEvent) const = 0;

        /// \brief 日志开始回放时调用此接口
        ///  可以派生该接口加入处理事件，日志框架会分别处理所有派生方法
        /// \return void 
        virtual void OnJournalReplayStart() = 0;

        /// \brief 日志回放停止时调用此接口
        ///  可以派生该接口加入处理事件，日志框架会分别处理所有派生方法
        /// \return void 
        virtual void OnJournalReplayEnd() = 0;
    };
}


